﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSE.ProcessManager.Common.Gateway;
using PSE.ProcessManager.Common.Gateway;

namespace PSE.ProcessManager.Server.InteligenceModules
{
    /// <summary>
    /// Classe base para os executores de processos.
    /// </summary>
    public class BaseProcessExecutor
    {
        /// <summary>
        /// Gateway de conexão com o Processo.
        /// </summary>
        public ProcessSenderGateway Gateway { get; set; }

        /// <summary>
        /// Mensagem que será enviada ao processo.
        /// </summary>
        public BaseMessage Message { get; set; }

        /// <summary>-
        /// Interrompe a execução do processo.
        /// </summary>
        public void Abort()
        {
            if (Gateway == null)
                //TODO: Implementar disparo de exception para quando não houver um Gateway definido.
                throw new Exception();

            if (Message == null)
                //TODO: Implementar disparo de exception para quando não houver uma Mensagem definida.
                throw new Exception();

            Message.Operation = "Abort";

            //Envia a mensagem para o processo.
            this.Gateway.BeginSendMessage(Message);
        }
    }
}
